#include <stdio.h>

/*
	在一个二维数组中，每一行都按照从左到右递增的顺序排序，
	每一列都按照从上到下递增的顺序排序。
	请完成一个函数，输入这样的一个二维数组和一个整数，
	判断数组中是否含有该整数。
*/

int search(int data, int (*array)[10], int rows, int cols)
{
	if (rows == 0 || cols == 0)
	{
		return 0;
	}
	int flag1 = array[0][0];
	int flag2 = array[rows - 1][cols - 1];
	int flag3 = array[0][cols - 1];
	int flag4 = array[rows - 1][0];
	int left = 0, right = cols, up = 0, down = rows;
	if (data == flag1 || data == flag2 || data == flag3 || data == flag4)
	{
		return 1;
	}
	if (data < flag1 || data > flag2)
	{
		return 0;
	}
	if (data < flag3)
	{
		right--;
	}
	if (data > flag3)
	{
		up++;
	}
	if (data > flag4)
	{
		left++;
	}
	if (data < flag4)
	{
		down--;
	}
	int m = down - up;
	int n = right - left;
	int subarray[m][10];
	int i, j;
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			subarray[i][j] = array[i + up][j + left];
		}
	}
	return search(data, subarray, m, n);
}

int main()
{
	int matrix[10][10];
	int i, j;
	int n = 0;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			matrix[i][j] = n;
			n++;
		}
	}
	printf("%d\n%d\n",
		   search(99, matrix, 10, 10),
		   search(32, matrix, 10, 10));
	return 0;
}
